#--------------------------------------
# instalar librerias
#--------------------------------------
#install.packages('readr') # borrar el símbolo # para ejecutar código
#------------------------------------------------------------------------------
# cargar librarias
#------------------------------------------------------------------------------
library(readxl)
library(readr)
library(ggplot2)
#------------------------------------------------------------------------------
# Opcioes especiales
#------------------------------------------------------------------------------
# Evita la notacion cientifica
options(scipen=999)Formativa 03: Aplicación Regresión lineal simple
EDU3826
Objetivo
- Aplicar modelos de regresión lineal simple
- Comprender los conceptos asociado a los modelos de regresión lineal simple.
- Interpretar los coeficientes de regresión lineal (intercepto y pendiente) situado a los contextos educativos.
Descripción
Sabemos que de manera genérica, un modelo lineal simple queda expresado de la siguiente forma \[Y=\beta_0 + \beta_1 X +\varepsilon.\]
En el que
- \(Y\) es la variable dependiente (por ejemplo, rendimiento académico).
- \(X\) es la variable independiente (por ejemplo, género).
- \(\beta_0\) es el intercepto.
- \(\beta_1\) es el coeficiente que expresa la relación lineal entre \(Y\) con \(X\).
- \(\varepsilon\) es el término de error.
Si denotamos por \(\hat Y = \beta_0 + \beta_1 X\) al valor predicho por el modelo, entonces la ecuación anterior se puede escribir de la siguiente forma
\[Y=\hat Y +\varepsilon.\] Es decir, existe una desviación o error \(\varepsilon\) en la predicción \(\hat Y\) al compararlo con el valor observado \(Y\).
Con el objetivo de comprender y situar la interpretación de los coeficienes \(\beta_0\) y \(\beta_1\), vamos a considerar dos casos:
El primer caso (Caso 1), corresponde a una situación en el que se tiene una variable independiente numérica (de razón o intervalo) como predictor de los puntajes de una variable dependiente también numéria (de razón o intervalo).
El segundo caso (Caso 2), corresponde a un problema en el que se tiene una variable independiente categórica (por ejemplo nominal o factores) como predictor de los puntajes de una variable dependiente también numéria (de razón o intervalo).
Lo anterior se resume en la siguiente tabla, vea que ambos casos involucra \(Y\) medida en una escala numérica.
| Caso | Escala Medición variable dependiente (\(Y\)) | Escala Medición variable explicativa (\(X\)) | |
|---|---|---|---|
| Caso 1 | Numérica | Numérica | |
| Caso 2 | Numérica | Categórica |
Luego, para estos dos casos vamos a interpretar el coficiente \(\beta_0\) (intercepto) y \(\beta_1\) (pendiente) al ajustar el modelo de regresión lineal. De tal forma, lograremos comprender la relación entre \(Y\) y \(X\). Partiremos con el caso 1 y para luego abordar del caso 2.
Contexto Educativo
Descripción Caso 1
La base de datos utilizada en el Caso 1 proviene de un estudio hipotético (simulación) para explorar la relación que tiene las ausencias escolares de los estudiantes de una escuela secundaria en su rendimiento académico. En este contexto, el rendimiento académico se mide en una escala de 0 a 100, y las ausencias se mide como la cantidad total de días que un estudiante no asistió a la escuela durante un semestre.
Descripción Caso 2
La base de datos utilizada en el Caso 2 proviene de un estudio hipotético para explorar la relación entre género con el rendimiento académico de estudiantes de una escuela secundaria. La motivación detrás de este estudio es comprender si existe una diferencia significativa en el rendimiento académico entre estudiantes mujeres y hombres.En este contexto, el rendimiento académico se mide en una escala de 0 a 100, y el género se mide como una variable binaria (0 para hombres y 1 para mujeres).
Abordaje del problema
A continuación se encuentra el flujo de trabajo por medio del cual se abordará cada caso.
Flujo de trabajo
La gran mayoria de los procedimientos involucrados en análisis de datos involucra ciertas etapas estables que responden a propósitos especificos. En conjunto, estas etapas logran cumplir el propósito general de un problema de investigación.
-
Estos pasos son:
- Etapa 1: Abrir/Crear los datos
- Etapa 2: Inspección de datos y ajuste de modelos
- Etapa 3: Formateo de resultados
- Etapa 4: Reporte de resultados
Etapa 0: Elementos previos
Esta etapa consiste en incluir elementos previos que necesarios para ejecutar códigos en R. Para el presente taller vamos a emplear algunas librerias fundamentales para procesar inicialmente nuestros datos, como la librería readxl,dplyr, tidyr y ggplot2 Para que los códigos incluídos como guías de este taller funcionen es necesario que las librerías recomendadas sean instaladas primero, una vez que se instalan no se deben volver a instalar.
Esta librería, la podemos llamar e instalar empleando las siguientes línea de código:
Caso 1
Etapa 1: Abrir/Crear bases de datos
- Vamos a creae una base de datos en R y la vamos a guardar como un archivo CSV para su posterior análisis. Note que ahora utilizamos la función
data.frame()para construir nuestra tabla.
# Crear la base de datos
data <- data.frame(
student_id = 1:60,
absences = c(10, 5, 12, 3, 7, 8, 11, 2, 15, 6, 9, 13, 4, 14, 1, 16, 7, 5, 12, 3, 8, 10, 6, 11, 2, 14,
9, 13, 4, 1, 15, 8, 7, 12, 3, 5, 11, 6, 10, 14, 9, 13, 4, 2, 8, 15, 7, 12, 6, 10, 5, 11, 3, 14, 1, 9, 15, 8, 4, 7),
academic_performance = c(75, 88, 70, 92, 85, 78, 72, 95, 60, 80, 76, 65, 90, 62, 98, 58, 83, 86, 68,
93, 77, 74, 82, 71, 96, 64, 75, 66, 91, 97, 61, 79, 84, 69, 94, 87, 73, 81,
76, 63, 74, 67, 89, 97, 78, 59, 85, 70, 80, 75, 88, 72, 92, 62, 99, 77, 60,
79, 90, 83)
)
# Guardar la base de datos en un archivo CSV
readr::write_csv(data, "academic_data.csv")La base de datos ya se creó y guardó. A continuación se muestran los primeros 10 registros.
| student_id | absences | academic_performance |
|---|---|---|
| 1 | 10 | 75 |
| 2 | 5 | 88 |
| 3 | 12 | 70 |
| 4 | 3 | 92 |
| 5 | 7 | 85 |
| 6 | 8 | 78 |
| 7 | 11 | 72 |
| 8 | 2 | 95 |
| 9 | 15 | 60 |
| 10 | 6 | 80 |
Etapa 2: Inspección de datos y ajuste de modelos
Antes de ajustar nuestro modelo lineal, vamos a inspeccionar los datos. Para ello hareamos un gráfico de dispersión que muestre visualmente la relación entre las ausencias y el rendimiento académico.
library(ggplot2)
# Crear un gráfico de dispersión con la línea de regresión
ggplot(data, aes(x = absences, y = academic_performance)) +
geom_point() +
labs(title = "Relación entre Ausencias y Rendimiento Académico",
x = "Número de Ausencias",
y = "Rendimiento Académico")Del gráfico se observa una relación inversa, es decir, en la medida que el Número de ausencias aumenta el Redimiento académico disminuye. Veamos si esta relación es significativa estadísticamente hablando (recuerde las tres preguntas fundamentales del curso). Para ello, ajustaremos el siguiente modelo lineal
\[\text{Rendimiento Academico}= \beta_0 + \beta_1 \text{Ausencias} + \varepsilon\] Ajustamos el modelo anterior a los datos.
El resultado (ouput) se muestra a continuación usando la función summary():
Call:
lm(formula = academic_performance ~ absences, data = data)
Residuals:
Min 1Q Median 3Q Max
-4.5018 -0.8314 0.1634 1.1616 3.1657
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 100.50642 0.44433 226.20 <2e-16 ***
absences -2.66744 0.04794 -55.65 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.569 on 58 degrees of freedom
Multiple R-squared: 0.9816, Adjusted R-squared: 0.9813
F-statistic: 3096 on 1 and 58 DF, p-value: < 2.2e-16
Etapa 3: Formateo de resultados
Podemos mostrar el output de manera más amigable usando la función tab_model de la libera librería sjPlot. El ouput` se muestra a continuación:
| academic performance | |||||
| Predictors | Estimates | std. Error | CI | Statistic | p |
| (Intercept) | 100.51 | 0.44 | 99.62 – 101.40 | 226.20 | <0.001 |
| absences | -2.67 | 0.05 | -2.76 – -2.57 | -55.64 | <0.001 |
| Observations | 60 | ||||
| R2 / R2 adjusted | 0.982 / 0.981 | ||||
Usando la información anterior, la ecuación que específica muestro modelo lineal queda de la siguiente forma:
\[\text{Rendimiento Academico}= 100.51 -2.67 \text{Ausencias} + \varepsilon\] Es decir, los puntajes de Rendimiento academico quedan predichos por el siguiente modelo \[\text{Rendimiento Academico}_{\text{Predicho}}= 100.51 -2.67 \text{Ausencias}\]
A continuación, se muestra en un gráfico de dispersión con la recta ajustada a los datos
library(ggplot2)
# Crear un gráfico de dispersión con la regresión
ggplot(data, aes(x = absences, y = academic_performance)) +
geom_point() +
geom_smooth(method = "lm", col = "blue") +
labs(title = "Relación entre Ausencias y Rendimiento Académico",
x = "Número de Ausencias",
y = "Rendimiento Académico")`geom_smooth()` using formula = 'y ~ x'
Etapa 4: Reporte de resultados
Los resultados indican una relación negativa y estadísticamente significativa entre el número de ausencias a clases durante el semestre y el rendimiento académico de las y los estudiantes, \(F(1, 58) = 3096\), \(p < .01\). Específicamente, por cada ausencia adicional se observa una disminución promedio de 2.67 puntos en el rendimiento académico de las y los estudiantes. El modelo presenta un buen ajuste, explicando aproximadamente el \(98\%\) de la variabilidad observada en los datos (\(R^2 = 0{.}982\)), lo que sugiere una alta capacidad predictiva de la ausencias sobre el rendimiento académico.
-Note que aquí hemos exagerado los efectos de la relación entre ausencia a clases y rendimiento académico.
Interpretación del intercepto (\(\beta_0\)) y pendiente (\(\beta_1\))
El intercepto \(\beta_0\) es 100.5064, lo que indica que cuando el número de ausencias es cero, el rendimiento académico promedio de los estudiantes es 100.5064 puntos. Recuerde que el intercepto es el valor que toma \(\hat Y\) para los casos en que \(X=0\).
El coeficiente de ausencias (\(\beta_1\), o pendiente) es -2.6674, lo que indica que por cada día de ausencia adicional, el rendimiento académico promedio de los estudiantes disminuye aproximadamente 2.67 puntos. Recuerde que la pendiente expresa la magnitud del cambio en \(Y\) por unidad de cambio en \(X\) (para este caso dado que \(X\) está medido en días, entonces una unidad de cambio en \(X\) significa un día adicional de ausencia a clases durante el primer semestre).
El valor \(p\) asociado con el coeficiente de ausencias es menor que 0.001, indicando que la relación entre el número de ausencias y el rendimiento académico es estadísticamente significativa.
El coeficiente de determinación (\(R^2\)) igual a 0.982 indica que el 98.2% de la variabilidad en el rendimiento académico puede ser explicada por el número de ausencias.
Caso 2
Ahora vamos a utilizar una variable independiente categórica para comprender cómo interpretar los resultados de una regresión lineal simple.
Etapa 1: Abrir/Crear los datos
- Vamos a crea la base de datos en R y la vamos a guardar como un archivo CSV para su posterior análisis. Note que ahora utilizamos la función
data.frame()para construir nuestra tabla.
# Crear la base de datos
data_g <- data.frame(
student_id = 1:60,
gender = c(rep(1, 30), rep(0, 30)), # 0 para hombres, 1 para mujeres
academic_performance = c(95, 88, 70, 92, 85, 78, 83, 95, 91, 80, 86, 85, 90, 92, 98, 58,
83, 86, 78, 93, 77, 94, 82, 81, 96, 94, 75, 66, 91, 97, 61, 79,
84, 69, 94, 87, 73, 81, 76, 63, 74, 67, 89, 97, 78, 59, 85, 70,
80, 75, 88, 72, 92, 62, 99, 77, 60, 79, 90, 83)
)
# Guardar la base de datos en un archivo CSV
readr::write_csv(data_g, "academic_data_gender.csv")La base de datos ya se creó y guardo. A continuación se muestran los primeros 10 registros.
| student_id | gender | academic_performance | |
|---|---|---|---|
| 1 | 1 | 1 | 95 |
| 2 | 2 | 1 | 88 |
| 3 | 3 | 1 | 70 |
| 4 | 4 | 1 | 92 |
| 5 | 5 | 1 | 85 |
| 40 | 40 | 0 | 63 |
| 41 | 41 | 0 | 74 |
| 42 | 42 | 0 | 67 |
| 43 | 43 | 0 | 89 |
| 44 | 44 | 0 | 97 |
Etapa 2: Inspección de datos y ajuste de modelos
Antes de ajustar nuestro modelo lineal, vamos a inspeccionar los datos. Para ello haremos estadística descriptiva y un gráfico boxplot para explorar visualmente la relación entre entre el género y el rendimiento académico. Note que debido a que nuestra variable independiente \(X\) es el género, se requiere una categoría para expresar a las mujeres y hombres. En este caso, esta variable se encuentra codificada con un 0 para identificar a los hombres y con un 1 para identificar a las mujeres).
Para el análisis descriptivo, se emplearon la media y la desviación estándar del rendimiento académico según género. Los resultados, presentados a continuación, muestran que las mujeres obtuvieron un puntaje promedio más alto (\(M = 85.3\), \(DE = 9.65\)) en comparación con los hombres (\(M = 78.1\), \(DE = 11.20\)).
| gender | academic_performance_mean | academic_performance_SD |
|---|---|---|
| 0 | 78.1 | 11.198368 |
| 1 | 85.3 | 9.645975 |
El gráfico boxplot, muestra
library(ggplot2)
# Crear un gráfico de dispersión con la línea de regresión
ggplot(data_g, aes(x = factor(gender), y = academic_performance)) +
geom_boxplot() +
labs(title = "Relación entre Género y Rendimiento Académico",
x = "Género (0 = Hombre, 1 = Mujer)",
y = "Rendimiento Académico")Ambas fuentes de evidencia indican que existe una relación entre el género y el rendimiento académico, es decir, que el rendimiento académico promedio es diferente entre hombres y mujeres. Pongamos a prueba esta hipótesis ajustando el siguiente modelo lineal
\[\text{Rendimiento Academico}= \beta_0 + \beta_1 \text{Genero} + \varepsilon\]
-Note que este tipo de situación ya la hemos abordado anteriormente, pero por medio de una prueba \(t\). Más adelante se verá que por medio de un modelo de regresión lineal es posible recuperar los resultados de una prueba \(t\).
Ajustamos el modelo anterior a los datos construidos. El resultado (ouput) se muestra a continuación usando la función summary():
# Ajustar el modelo de regresión lineal
model_g <- lm(academic_performance ~ gender, data = data_g)
# Resumen del modelo
summary(model_g)
Call:
lm(formula = academic_performance ~ gender, data = data_g)
Residuals:
Min 1Q Median 3Q Max
-27.30 -6.40 0.70 7.95 20.90
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 78.100 1.908 40.931 < 2e-16 ***
gender 7.200 2.698 2.668 0.00987 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 10.45 on 58 degrees of freedom
Multiple R-squared: 0.1093, Adjusted R-squared: 0.09397
F-statistic: 7.119 on 1 and 58 DF, p-value: 0.009871
Etapa 3: Formateo de resultados
Podemos mostrar el output de manera más amigable usando la función tab_model de la libera librería sjPlot. El ouput`se muestra a continuación:
| academic performance | |||||
| Predictors | Estimates | std. Error | CI | Statistic | p |
| (Intercept) | 78.10 | 1.91 | 74.28 – 81.92 | 40.93 | <0.001 |
| gender | 7.20 | 2.70 | 1.80 – 12.60 | 2.67 | 0.010 |
| Observations | 60 | ||||
| R2 / R2 adjusted | 0.109 / 0.094 | ||||
Usando la información anterior, la ecuación que específica muestro modelo lineal queda de la siguiente forma:
\[\text{Rendimiento Academico}= 78.10 + 7.2 \text{Genero} + \varepsilon\] Es decir, los puntajes de Rendimiento academico quedan predichos por el siguiente modelo \[\text{Rendimiento Academico}_{\text{Predicho}}= 78.10 + 7.2 \text{Genero}\]
Etapa 4: Reporte de resultados
Se observa una relación positiva y estadísticamente significativa entre el género y el rendimiento académico, \(F(1, 58) = 7.119\), \(p < .01\). En promedio, las mujeres presentan un rendimiento académico 7.20 puntos superior al de los hombres (\(B_1 = 7.20\), \(p < .01\)). Este efecto del género explica aproximadamente un \(10.9\%\) de la variabilidad en el rendimiento académico (\(R^2 = 0.109\)).
-Note que aquí hemos exagerado los efectos de la relación entre Genero y rendimiento académico.
Interpretación del intercepto (\(\beta_0\)) y pendiente (\(\beta_1\))
El intercepto \(\beta_0\) es 78.10, lo que indica que cuando el Genero es cero, el rendimiento académico promedio de los estudiantes es 78.10 puntos. Seguramente ya notó que decir cuando el Genero es cero no tiene mucho sentido ¿Qué significa cuando Genero es cero?. Para respoder esto, tenemos que ir al inicio y recordar cómo está codificada la variable
Genero(cuál fue la categoría que está codificada con el valor 0). Luego de revisar, vemos que el0fue asignado para representar a los hombres y1para representar a las mujeres. Por lo tanto, la forma adecuada de interpreterar el coeficiente \(\beta_0 = 78.10\) sería: El interpceto \(\beta_0=78.10\) indica el rendimiento académico promedio que obtienen los hombres (es decir, cuando \(Genero = 0\)). Notemos que este intercepto coindice con el promedio que obtuvimos para los hombres cuando hicimos estadística descriptiva (\(M=78.1, DS=11.20\)). En otras palabras, dada la codificación de la variableGenero, a partir del intercepto podemos recuperar el promedio del rendimiento académico para los hombres.El coeficiente \(\beta_1\) o pendiente es +7.2, lo que indica una relación positiva (y ya vimos que significativa) entre el género y el rendimiento académico. Una interpretación más sustantiva de este coeficiente indica que las mujeres (codificada por
1) en promedio tienen un rendimiento académico 7.2 puntos más alto que los hombres. Al realizar esta comparación, –es decir el promedio de las mujeres en comparación con el promedio de los hombres–, se está expresando la unidad de cambio en la variable independiente (categoria1en comparación con la categoria0) para expresar el cambio en la variable dependiente.Note que si utilizamos el modelo dado por \(\text{Rendimiento Academico}_{\text{Predicho}}= 78.10 + 7.2 \text{Genero}\) y reemplazamos \(Genero=1\), es decir, consideramos a las mujeres, el valor que toma \(\text{Rendimiento Academico}_{\text{Predicho}}\) es
\[\text{Rendimiento Academico}_{\text{Predicho}}= 78.10 + 7.2 \text{Genero}\] \[\text{Rendimiento Academico}_{\text{Predicho}}= 78.10 + 7.2 (1)\] \[\text{Rendimiento Academico}_{\text{Predicho}}= 78.10 + 7.2=85.3\] que corresponde al puntaje promedio de rendimiento académico que observamos para las mujeres cuando hicimos estadística descriptiva (\(M=85.3, DS=9.65)\).
El valor \(p\) asociado con el coeficiente de ausencias es menor que 0.01, indicando que la relación entre Género y el rendimiento académico es estadísticamente significativa.
El coeficiente de determinación (\(R^2\)) de 0.109 indica que el 10.9% de la variabilidad en el rendimiento académico puede ser explicada por el Genero.
Ejemplo de Reportes: Publicaciones
Artículos de investigación que reportan evidencia de regresión lineal simple
- Treviño, E., Scheele, J., & Flores, S. M. (2014). Beyond the test score: A mixed methods analysis of a college access intervention in Chile. Journal of Mixed Methods Research, 8(3), 255–265. https://doi.org/10.1177/1558689814527940
- Ellis, R. A., Han, F., & Pardo A. (2017). Improving Learning Analytics – Combining Observational and Self-Report Data on Student Learning. Educational Technology & Society, 20 (3), 158–169. https://www.jstor.org/stable/26196127